//iicwrite(0x40,0xf0);   //DAתʱֻҪwhile1дһˣ
                         //ǵðtemp=0.39*temp;

sbit scl=P2^0;
sbit sda=P2^1;

void iicwrite(uchar add,uchar dat);
uchar iicread(uchar add);

while1
         uchar num;
        
        /*гû*/
	//iicwrite(0x00,0);
	//num=iicread(0x00);//
	//iicwrite(0x00,num+1)//

while1
    		num=iicread(0x01);//IICʱע͵;01ǹ 03ǻrb2
		liu=num/100;qi=num%100/10;ba=num%10;
		display1(yi,er);
		display2(san,si);
		display3(wu,liu);
		display4(qi,ba);

ӳ

void iicdelay(uchar m)
{
	do
	{
		_nop_();
	}
	while(m--);
}


void iicstrat()
{
	sda=1;
	_nop_();
	scl=1;
	_nop_();
	sda=0;
	_nop_();
	scl=0;
	_nop_();
}


void iicstop()
{
	sda=0;
	_nop_();
	scl=1;
	_nop_();
	sda=1;
	_nop_();
}


void writebyte(uchar dat)
{
	uchar i;
	for(i=0;i<8;i++)
	{
		scl=0;
		sda=dat&0x80;
		scl=1;
		dat<<=1;
	}
	scl=0;
}


uchar iicreadbyte()
{
	uchar dat;
	uchar i;
	for(i=0;i<8;i++)
	{
		scl=1;
		iicdelay(5);
		dat<<=1;
		if(sda)
		{
			dat|=0x01;
		}
		scl=0;
	}
	
	return dat;
}

uchar ack()
{
	scl=1;
	iicdelay(5);
	if(sda==1)
	{
		scl=0;
		iicstop();
		return 0;
	}
	else 
	{
		scl=0;
		return 1;
	}
}

//гû//

void iicwrite(uchar add,uchar dat)
{
	iicstrat();
	writebyte(0xa0);//iica0ad90
	ack();
	writebyte(add);
	ack();
	writebyte(dat);
	ack();
	iicstop();
}

uchar iicread(uchar add)
{
	uchar temp;
	
	iicstrat();
	writebyte(0xa0);//iica0ad90
	ack();
	writebyte(add);
	ack();
	iicstop();
	
	iicstrat();
	writebyte(0xa1);//iica1ad91
	ack();
	temp=iicreadbyte();
	iicstop();
	
	temp=0.39*temp;//iic
	
	return temp;
}